package com.yoyo.itravel.bean;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;

/**
 * @Description 景点实体类
 *
 * @author HZX
 * @date 2020/5/9 0:02
 */
public class Sight implements Serializable {

    private String sightId; // 景点id
    private String sightName; // 景点名称
    private String openTime; // 开放时间
    private String introduce; // 景点简介
    private String orderNotice; // 预定须知
    private Integer isOnSell; // 在售状态，0：未在售，1：在售
    private Integer collectCount; // 游客收藏次数
    private String sightImg; // 景点缩略图
    private Integer sellCount; // 景点的门票销量
    private String detailAddr; // 景点详细地址

    private List<SightTheme> sightThemes; // 景点所属主题集合

    private String countryId; // 景点所在国家id
    private Country country; // 国家对象

    private String provinceId; // 景点所在省份id
    private Province province; // 省份对象

    private String cityId; // 景点所在城市id
    private City city; // 城市对象

    private String sightCompanyId; // 所属公司id
    private SightCompany sightCompany; // 所属公司对象

    private List<SightImg> sightImgList; // 景点详情图片列表

    private List<TicketType> ticketTypeList; // 门票类型集合

    private BigDecimal lowestPrice; // 起步价

    public Sight() {
    }

    public Sight(String sightId, String sightName, String openTime, String introduce, String orderNotice, Integer isOnSell, int collectCount, String sightImg, String detailAddr, List<SightTheme> sightTheme, String countryId, Country country, String provinceId, Province province, String cityId, City city, String sightCompanyId, SightCompany sightCompany) {
        this.sightId = sightId;
        this.sightName = sightName;
        this.openTime = openTime;
        this.introduce = introduce;
        this.orderNotice = orderNotice;
        this.isOnSell = isOnSell;
        this.collectCount = collectCount;
        this.sightImg = sightImg;
        this.detailAddr = detailAddr;
        this.sightThemes = sightTheme;
        this.countryId = countryId;
        this.country = country;
        this.provinceId = provinceId;
        this.province = province;
        this.cityId = cityId;
        this.city = city;
        this.sightCompanyId = sightCompanyId;
        this.sightCompany = sightCompany;
    }

    public Sight(String sightId, String sightName, Integer isOnSell, String detailAddr, String countryId, String provinceId, String cityId, String sightCompanyId) {
        this.sightId = sightId;
        this.sightName = sightName;
        this.isOnSell = isOnSell;
        this.detailAddr = detailAddr;
        this.countryId = countryId;
        this.provinceId = provinceId;
        this.cityId = cityId;
        this.sightCompanyId = sightCompanyId;
    }

    public Sight(String sightId, String sightName, String openTime, String introduce, String orderNotice, Integer isOnSell, Integer collectCount, String sightImg, Integer sellCount, String detailAddr, List<SightTheme> sightTheme, String countryId, Country country, String provinceId, Province province, String cityId, City city, String sightCompanyId, SightCompany sightCompany, List<SightImg> sightImgList, List<TicketType> ticketTypeList) {
        this.sightId = sightId;
        this.sightName = sightName;
        this.openTime = openTime;
        this.introduce = introduce;
        this.orderNotice = orderNotice;
        this.isOnSell = isOnSell;
        this.collectCount = collectCount;
        this.sightImg = sightImg;
        this.sellCount = sellCount;
        this.detailAddr = detailAddr;
        this.sightThemes = sightTheme;
        this.countryId = countryId;
        this.country = country;
        this.provinceId = provinceId;
        this.province = province;
        this.cityId = cityId;
        this.city = city;
        this.sightCompanyId = sightCompanyId;
        this.sightCompany = sightCompany;
        this.sightImgList = sightImgList;
        this.ticketTypeList = ticketTypeList;
    }

    public String getSightId() {
        return sightId;
    }

    public void setSightId(String sightId) {
        this.sightId = sightId;
    }

    public String getSightName() {
        return sightName;
    }

    public void setSightName(String sightName) {
        this.sightName = sightName;
    }

    public String getOpenTime() {
        return openTime;
    }

    public void setOpenTime(String openTime) {
        this.openTime = openTime;
    }

    public String getIntroduce() {
        return introduce;
    }

    public void setIntroduce(String introduce) {
        this.introduce = introduce;
    }

    public String getOrderNotice() {
        return orderNotice;
    }

    public void setOrderNotice(String orderNotice) {
        this.orderNotice = orderNotice;
    }

    public Integer getIsOnSell() {
        return isOnSell;
    }

    public void setIsOnSell(Integer isOnSell) {
        this.isOnSell = isOnSell;
    }

    public int getCollectCount() {
        return collectCount;
    }

    public void setCollectCount(int collectCount) {
        this.collectCount = collectCount;
    }

    public String getSightImg() {
        return sightImg;
    }

    public void setSightImg(String sightImg) {
        this.sightImg = sightImg;
    }

    public String getDetailAddr() {
        return detailAddr;
    }

    public void setDetailAddr(String detailAddr) {
        this.detailAddr = detailAddr;
    }

    public String getCountryId() {
        return countryId;
    }

    public void setCountryId(String countryId) {
        this.countryId = countryId;
    }

    public Country getCountry() {
        return country;
    }

    public void setCountry(Country country) {
        this.country = country;
    }

    public String getProvinceId() {
        return provinceId;
    }

    public void setProvinceId(String provinceId) {
        this.provinceId = provinceId;
    }

    public Province getProvince() {
        return province;
    }

    public void setProvince(Province province) {
        this.province = province;
    }

    public String getCityId() {
        return cityId;
    }

    public void setCityId(String cityId) {
        this.cityId = cityId;
    }

    public City getCity() {
        return city;
    }

    public void setCity(City city) {
        this.city = city;
    }

    public String getSightCompanyId() {
        return sightCompanyId;
    }



    public void setSightCompanyId(String sightCompanyId) {
        this.sightCompanyId = sightCompanyId;
    }

    public SightCompany getSightCompany() {
        return sightCompany;
    }

    public void setSightCompany(SightCompany sightCompany) {
        this.sightCompany = sightCompany;
    }

    public List<SightImg> getSightImgList() {
        return sightImgList;
    }

    public void setSightImgList(List<SightImg> sightImgList) {
        this.sightImgList = sightImgList;
    }

    public List<TicketType> getTicketTypeList() {
        return ticketTypeList;
    }

    public void setTicketTypeList(List<TicketType> ticketTypeList) {
        this.ticketTypeList = ticketTypeList;
    }

    public void setCollectCount(Integer collectCount) {
        this.collectCount = collectCount;
    }

    public Integer getSellCount() {
        return sellCount;
    }

    public void setSellCount(Integer sellCount) {
        this.sellCount = sellCount;
    }

    public List<SightTheme> getSightThemes() {
        return sightThemes;
    }

    public void setSightThemes(List<SightTheme> sightThemes) {
        this.sightThemes = sightThemes;
    }

    public BigDecimal getLowestPrice() {
        return lowestPrice;
    }

    public void setLowestPrice(BigDecimal lowestPrice) {
        this.lowestPrice = lowestPrice;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Sight sight = (Sight) o;
        return Objects.equals(sightId, sight.sightId) &&
                Objects.equals(sightName, sight.sightName) &&
                Objects.equals(openTime, sight.openTime) &&
                Objects.equals(introduce, sight.introduce) &&
                Objects.equals(orderNotice, sight.orderNotice) &&
                Objects.equals(isOnSell, sight.isOnSell) &&
                Objects.equals(collectCount, sight.collectCount) &&
                Objects.equals(sightImg, sight.sightImg) &&
                Objects.equals(sellCount, sight.sellCount) &&
                Objects.equals(detailAddr, sight.detailAddr) &&
                Objects.equals(countryId, sight.countryId) &&
                Objects.equals(provinceId, sight.provinceId) &&
                Objects.equals(cityId, sight.cityId) &&
                Objects.equals(sightCompanyId, sight.sightCompanyId) &&
                Objects.equals(lowestPrice, sight.lowestPrice);
    }

    @Override
    public int hashCode() {
        return Objects.hash(sightId, sightName, openTime, introduce, orderNotice, isOnSell, collectCount, sightImg, sellCount, detailAddr, countryId, provinceId, cityId, sightCompanyId, lowestPrice);
    }

    @Override
    public String toString() {
        return "Sight{" +
                "sightId='" + sightId + '\'' +
                ", sightName='" + sightName + '\'' +
                ", openTime='" + openTime + '\'' +
                ", introduce='" + introduce + '\'' +
                ", orderNotice='" + orderNotice + '\'' +
                ", isOnSell=" + isOnSell +
                ", collectCount=" + collectCount +
                ", sightImg='" + sightImg + '\'' +
                ", sellCount=" + sellCount +
                ", detailAddr='" + detailAddr + '\'' +
                ", sightTheme=" + sightThemes +
                ", countryId='" + countryId + '\'' +
                ", country=" + country +
                ", provinceId='" + provinceId + '\'' +
                ", province=" + province +
                ", cityId='" + cityId + '\'' +
                ", city=" + city +
                ", sightCompanyId='" + sightCompanyId + '\'' +
                ", sightCompany=" + sightCompany +
                ", sightImgList=" + sightImgList +
                ", ticketTypeList=" + ticketTypeList +
                '}';
    }
}
